home *** CD-ROM | disk | FTP | other *** search
/ Large Pack of OldSkool DOS MOD Trackers / buzzmachines_massive.exe / Dev / Geoffroy Notefilter SourceCode / BuzzParameterEnveloppeTime.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2002-05-06  |  1.7 KB  |  53 lines

  1. // BuzzParameterEnveloppeTime.cpp: implementation of the BuzzParameterEnveloppeTime class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4.  
  5. #include "BuzzParameterEnveloppeTime.h"
  6.  
  7. //////////////////////////////////////////////////////////////////////
  8. // Construction/Destruction
  9. //////////////////////////////////////////////////////////////////////
  10.  
  11. word BuzzParameterEnveloppeTime::MIN_SLIDER_VALUE = 0;
  12. word BuzzParameterEnveloppeTime::MAX_SLIDER_VALUE = 0xFFFE;
  13. word BuzzParameterEnveloppeTime::UNCHANGED_SLIDER_VALUE = 0xFFFF;
  14. word BuzzParameterEnveloppeTime::INIT_SLIDER_VALUE = 0;
  15.  
  16. float BuzzParameterEnveloppeTime::MIN_REAL_VALUE = 0.01f;
  17. float BuzzParameterEnveloppeTime::MAX_REAL_VALUE = 127.0f;
  18.  
  19. BuzzParameterEnveloppeTime::BuzzParameterEnveloppeTime() : BuzzParameter<word,float>()
  20. {
  21. }
  22.  
  23. BuzzParameterEnveloppeTime::~BuzzParameterEnveloppeTime()
  24. {
  25. }
  26.  
  27. void BuzzParameterEnveloppeTime::compute()
  28. {
  29.     float valueToReach = (float)(MIN_REAL_VALUE+(currentSliderValue-MIN_SLIDER_VALUE)*(MAX_REAL_VALUE-MIN_REAL_VALUE)/(MAX_SLIDER_VALUE-MIN_SLIDER_VALUE));
  30.  
  31.     // stop !
  32.     if (timeSinceLastValueUpdate >= inertia) {
  33.         currentRealValue = valueToReach;
  34.     } 
  35.     // go smooth!
  36.     else {
  37.         currentRealValue = (float) (currentRealValue + ((valueToReach - currentRealValue) / (float) (inertia - timeSinceLastValueUpdate)));
  38.     }
  39. }
  40.  
  41. char const * BuzzParameterEnveloppeTime::toString(word const value)
  42. {
  43.     static char txt[50];
  44.     txt[0]=0;
  45.  
  46.     float valueToReach = (float)(MIN_REAL_VALUE+(value-MIN_SLIDER_VALUE)*(MAX_REAL_VALUE-MIN_REAL_VALUE)/(MAX_SLIDER_VALUE-MIN_SLIDER_VALUE));
  47.  
  48.     sprintf(txt,"%f",valueToReach);
  49.  
  50.     return txt;
  51.  
  52. }
  53.